ActiveRecord 查询接口

概述

ActiveRecord 是 Ruby on Rails 框架中的一个核心组件,它提供了一种对象关系映射(ORM)机制,使得开发者可以通过 Ruby 对象来操作数据库。ActiveRecord 查询接口是 ActiveRecord 提供的一组方法,用于从数据库中检索数据。本教程将详细介绍 ActiveRecord 查询接口的使用方法,包括基本的查询操作、条件查询、排序、分页等。

基本查询

1. 查找所有记录

要查找某个模型的所有记录,可以使用 all 方法。例如,假设我们有一个 User 模型:

users = User.all

这将返回一个包含所有 User 记录的数组。

2. 查找单个记录

要查找单个记录,可以使用 find 方法,并传入记录的 ID:

user = User.find(1)

这将返回 ID 为 1 的 User 记录。如果记录不存在,将抛出 ActiveRecord::RecordNotFound 异常。

3. 查找第一个和最后一个记录

要查找第一个或最后一个记录,可以使用 first 和 last 方法:

first_user = User.first
last_user = User.last

条件查询

1. 使用 where 方法

where 方法用于根据条件筛选记录。例如,查找所有年龄大于 18 岁的用户:

users = User.where("age > ?", 18)

2. 使用哈希条件

你也可以使用哈希来指定条件:

users = User.where(age: 18)

这将查找所有年龄为 18 岁的用户。

3. 组合条件

你可以组合多个条件:

users = User.where(age: 18).where(gender: "male")

这将查找所有年龄为 18 岁且性别为男性的用户。

排序

1. 使用 order 方法

order 方法用于对查询结果进行排序。例如,按年龄升序排序:

users = User.order(:age)

2. 降序排序

要按降序排序,可以在字段名前加上 desc:

users = User.order(age: :desc)

分页

1. 使用 limit 和 offset 方法

limit 方法用于限制返回的记录数量,offset 方法用于跳过指定数量的记录。例如,获取第 11 到第 20 条记录:

users = User.limit(10).offset(10)

2. 使用 page 和 per 方法

ActiveRecord 还提供了更方便的分页方法 page 和 per:

users = User.page(2).per(10)

这将获取第二页的 10 条记录。

实践练习

练习 1: 查找所有年龄大于 20 岁的用户

编写代码查找所有年龄大于 20 岁的用户,并按年龄降序排序。

users = User.where("age > ?", 20).order(age: :desc)

练习 2: 分页显示用户列表

编写代码分页显示用户列表,每页显示 15 条记录,并获取第三页的数据。

users = User.page(3).per(15)

总结

ActiveRecord 查询接口提供了丰富的功能,使得开发者可以方便地从数据库中检索数据。通过本教程,你应该已经掌握了基本的查询操作、条件查询、排序和分页等技巧。在实际开发中,灵活运用这些方法将大大提高你的开发效率。

下一步

接下来,你可以继续学习 ActiveRecord 的其他高级功能,如关联关系、数据库迁移等。这些内容将帮助你更深入地理解 ActiveRecord 的工作原理,并提升你的 Rails 开发技能。